/**   
 * @文件名称: IBaseService.java
 * @类路径: cn.common.base
 * @描述: TODO
 * @公司：昆明天度网络信息科技有限公司
 * @作者：李兴建
 * @时间：2013-9-29 上午11:09:35
 * @版本：V1.0   
 */

package cn.ccew.common.base.service;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;

import cn.ccew.common.base.dao.IBaseDao;
import cn.ccew.common.base.model.BaseEntity;
import cn.ccew.common.utils.Page;

/**
 * @类功能说明：
 * @类修改者：
 * @修改日期：
 * @修改说明：
 * @公司：春城1网
 * @作者：李兴建
 * @创建时间：2013-9-29 上午11:09:35
 * @版本：V1.0
 */

public interface IBaseService {

	public void delete(String id, Class<? extends BaseEntity> clazz) throws Exception;
	public int deleteAll(Class<? extends BaseEntity> clazz);
	public <T extends BaseEntity> T findById(String id, Class<T> clazz) throws Exception;

	public <T extends BaseEntity> List<T> findListByProperty(String propertyName, Object value, Class<T> clazz) throws Exception;

	public <T extends BaseEntity> T findObjByProperty(String propertyName, Object value, Class<T> clazz) throws Exception;

	public <T extends BaseEntity> List<T> findAll(Class<T> clazz) throws Exception;

	public boolean isExist(String id, Class<? extends BaseEntity> clazz) throws Exception;

	public void saveOrUpdate(BaseEntity bean) throws Exception;

	public Page findBy(Query query, int pageNumber, int pageSize) throws Exception;

	public Page findBy(Criteria criteria, int pageNumber, int pageSize) throws Exception;

	public Page findPageBy(Criteria criteria, int pageNumber, int pageSize) throws Exception;

	public List<Object> findBySql(String sql) throws Exception;

	public Criteria createCriteria(Class<? extends BaseEntity> clazz) throws Exception;
}
